package com.ruoyi.car.business.service;

import com.ruoyi.car.business.domain.BusBpmnInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 流程定义明细Service接口
 * 
 * @author ruoyi
 * @date 2022-02-03
 */
public interface IBusBpmnInfoService 
{
    /**
     * 查询流程定义明细
     * 
     * @param id 流程定义明细主键
     * @return 流程定义明细
     */
    public BusBpmnInfo selectBusBpmnInfoById(Long id);

    /**
     * 查询流程定义明细列表
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 流程定义明细集合
     */
    public List<BusBpmnInfo> selectBusBpmnInfoList(BusBpmnInfo busBpmnInfo);

    /**
     * 新增流程定义明细
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 结果
     */
    public int insertBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 修改流程定义明细
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 结果
     */
    public int updateBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 批量删除流程定义明细
     * 
     * @param ids 需要删除的流程定义明细主键集合
     * @return 结果
     */
    public int deleteBusBpmnInfoByIds(String ids);

    /**
     * 删除流程定义明细信息
     * 
     * @param id 流程定义明细主键
     * @return 结果
     */
    public void deleteBusBpmnInfoById(Long id);

    /**
     * 流程文件部署
     */
    void deploy(String path, String bpmnType, String info) throws IOException;

    /**
     * 部署文件上传
     * @param file
     * @return
     * @throws IOException
     */
    String upload(MultipartFile file) throws IOException;

    /**
     * 查看资源
     * @param deploymentId
     * @param type
     * @return
     */
    InputStream getFileInputStream(String deploymentId, String type);

    /**
     * 流程类型
     * @param bpmnType
     * @return
     */
    BusBpmnInfo getByBpmnType(String bpmnType);
}
